The traditional method of mass production realizes economy of scale due to continuous application of capital and division of labor. In recent years, however, a method of "flexible assembly" has become popular for relatively expensive and complex items such as computers. For these kinds of products, the additional cost of assembling a unique system for a particular customer is offset by the omission of parts that are not desired by the customer. The flexibly assembled product becomes a better match to a specific customer's need than a standard product designed for a particular group of customers.
The typical method of handling an order for a flexibly assembled product is to split the order into secondary orders or "production requests" for groups of standard parts or "kits" that are functionally related or comprise sub-assemblies. Since the production requests are standardized, the flexibly assembled item is sold in terms of features or "packages" which can be made up of the kits. The process of converting the desired packages or features into corresponding production requests is a process of expansion from a list of packages to a list of kits. As this expansion process is carried out, the order is also validated or checked for comformance with marketing and engineering constraints on permissible configurations. In many cases, violations of the constraints are not evident when the order is submitted and are revealed only when the order is partially or totally expanded.
Computer systems have been used previously for expanding and validating orders. The expansion and validation, for example, is part of an inventory control system. Using traditional computer programs, the computer system performs a syntactic check on the list of package numbers comprising an order. The computer system may also use product definition files for separate versions of a generic product as the basis for expanding packages into kits, and may check whether the individual package numbers are legal options within a particular hierarchy under at least some conditions. But global engineering constraints such as power and interconnection are not performed by these computer systems using traditional programming techniques. Although it would be possible to program constraints into the computer program for a specific set of product hierarchies, the computer program would not be easy to update and maintain since the computer program would have to be rewritten for each change in the product hierarchy. Moreover, the constraints are relatively complex and change frequently. It is, therefore, not economical to include global constraint checking in these conventional computer systems.
In order to provide a maintainable computer system for running expansion and validation of an order, knowledge-based systems have been considered wherein the knowledge of what the constraints are and when the constraints are to be applied is encoded declaratively in a knowledge base. A separate knowledge base interpreter interprets the knowledge base to apply the constraints. Consequently, the knowledge base interpreter need not be modified when the knowledge in the knowledge base is updated or changed. Knowledge systems have been used in general for problems that require diagnosis, recommendation, selection or classification. These problems have traditionally been performed by human experts and are not easily implemented using conventional programming techniques.
Presently there are highly developed commercial tools which may be used to build knowledge systems. The well-known commercial tools (such as KS300 manufactured by Teknowledge Inc., 525 University Avenue, Palo Alto, Calif. 94301) are patterned after a tool called EMYCIN described in The Emycin Manual by Van Melle et al., Standford University Report No. STAN-CS-81-885, Standford, Calif. 94305 (October, 1981).
EMYCIN is specifically designed as a domain-independent system for constructing rule-based consultant expert system programs. Domain knowledge is represented in EMYCIN systems primarily as condition-action production rules which are applied according to a goal-directed backward-chaining control procedure. Rules and consultation data are permitted to have associated measures of certainty, and incomplete data entry is allowed. The EMYCIN system includes an explanation facility displaying the line of reasoning followed by the consultation program, and answers questions from the client about the content of its knowledge base. To aid the system designer in producing a knowledge base for a specific domain, EMYCIN provides a terse and stylized language for writing rules; extensive checks to catch common user errors, such as misspellings; and methods for handling all necessary indexing chores.
In addition to production rules, the knowledge base for an EMYCIN system includes a hierarchical structure called a "context tree." The elemental representation of an object or idea is defined as a context-parameter-value triple. The context refers generally to an instance of a particular context type, the parameter refers to an attribute of the context instance and the value refers to the particular value of the parameter for the particular context instance. The context tree is defined by parent and offspring declarations for the context types.
The instantiation of contexts is similar to the invocation of a subroutine for each context, the subroutine in effect being defined by various declarations in the context definition. A consultation is started by instantiating a root context and the branches from this root context define major steps in the consultation during which the offspring contexts of the root node are instantiated. Thus, the context definitions are used to structure the data or evidence required to advise a user about the root context. Besides consultation control, the context tree may be used to organize the distinguished components of some object, or for representing distinguished events or situations that happen to an object.
A rule-based knowledge system has been developed for determining a computer system's configuration from a skeletal specification. A system called XCON has been used by the Digital Equipment Corporation when salesmen take orders and when processing clerks check and flesh out incoming orders for VAX-11/780 computer systems. Given a customer's order, XCON determines what, if any, modifications have to be made to the order for reasons of system functionality and produces a number of diagrams showing how the various components on the order are to be associated.
A version of XCON called R1 is described in John McDermott, R1: A Rule-Based Configurer Of Computer Systems, Department of Computer Science, Carnegie-Mellon University, (April, 1980). It is said that R1 has sufficient knowledge of the configuration domain and of the peculiarities of the various configuration constraints that at each step in the configuration process, R1 simply recognizes what to do. Consequently, it is said that little search is required in order for R1 to configure a computer system.
Although the XCON rule-based system represents a major improvement over traditional computer techniques in the field of computer configuration, it is rather difficult to change the constraint rules in XCON. In particular, to change a constraint rule, one needs to know what occurs before and after the constraint rule is applied. In general, the constraint rules are interlaced and spread, and they are not readily accessible for maintenance since in general they are not conceptually hierarchical.